/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package moonnms.libs.interfaces;

import moonnms.libs.libNMSSNMPClient;

/**
 *
 * Абстрактный класс устройства
 */
public abstract class NMSDeviceContext {
    protected String addr;                              // Адрес устройства
    protected String user;                              // Имя пользователя для входа по ssh/telnet
    protected String pass;                              // Пароль для входа по ssh/telnet
    protected String enpass;                            // пароль для перехода в привиллигированный режим
    
    protected String community_snmp_ro;                 // Community для доступа по SNMP для целей RO
    protected String community_snmp_rw;                 // Community для доступа по SNMP для целей RW

    protected libNMSSNMPClient snmp_ro = null;       // Класс для связи по SNMP для целей RO
    protected libNMSSNMPClient snmp_rw = null;       // Класс для связи по SNMP для целей RW
    protected boolean snmp = false;                     // Признак инициализации клиентов SNMP

    // Конструктор - вызывая указываем адрес устройства
    public NMSDeviceContext(String _addr) {
        addr = _addr;        
    }
    
    // Устанавливаем комьюнити для доступа по SNMPv2c
    public void setSNMPCommunity(String ro, String rw) {
        community_snmp_ro = ro;
        if(rw != null) {
            community_snmp_rw = rw;
        } else {
            community_snmp_rw = ro;
        }
        snmp_ro = new libNMSSNMPClient(addr, community_snmp_ro);
        snmp_rw = new libNMSSNMPClient(addr, community_snmp_rw);
        snmp = true;
    }
    
    // Установка учётных данных для доступа к устройству по ssh/telnet
    //   user - имя пользователя
    //   pass - пароль доступа
    //   enpass - пароль для перехода в привилигированный режим
    public void setUserPass(String User, String Pass, String enPass) {
        user = User;
        pass = Pass;
        enpass = enPass;
    };

    // Функция получения имени устройства
    abstract public String getDeviceName();
    
    // Функция получения версии ПО на устройстве
    abstract public String getFirmwareVersion();
    
    // Получение апаратной весрии устройства
    abstract public String getHardwareVersion();
    
    // Функция получения серийного номера устройства
    abstract public String getSerialNumber();
    
    // Функция получения расположения устройства (sysLocation)
    abstract public String getSysLocation();
    // Функция установки расположения устройства (sysLocation)
    abstract public void setSysLocation(String sysLocation);
    
    // Функция получения текущей конфигурации устройства
    abstract public String getConfiguration();
    
    // функция получения системного имени устройства
    abstract public String getSystemName();
    
    // Функция установки системного имени устройства
    abstract public void setSystemName(String sysName);
    
    // Функция получения системного контакта устройства
    abstract public String getSystemContact();
    
    // Функция установки системного контакта
    abstract public void setSystemContact(String sysContact);
}
